//
//  NGCApisManager.h
//  centauriOS_Youe
//
//  Created by 高栋阳 on 2018/4/4.
//  Copyright © 2018年 高栋阳. All rights reserved.
//

#import <Foundation/Foundation.h>
@class NGCWKWebView;
@class NGCWKViewController;
@class NGCWebView;
@class NGCWebViewController;

@interface NGCApisManager : NSObject


/**
 获取API管理对象
 @return 对象
 */
+(instancetype)shareInstance;

/**
 获取一个已经包含NGC基础Api的wkwebView

 @param url 需要加载的url
 @return 初始化好的VC
 */
- (NGCWKViewController *)createWKWebViewControllerWithUrl:(NSString *)url;

/**
 获取一个已经包含NGC基础Api的webView
 
 @param url 需要加载的url
 @return 初始化好的VC
 */
- (NGCWebViewController *)createWebViewControllerWithUrl:(NSString *)url;
/**
 设置容器并注入已有的jsBridge方法
 */
- (void)resetNGCBridgeWithWebview:(id)webView;


/**
 设置容器并注入已有的jsBridge方法
 @param webView 需要绑定的webView (wkWebView | UIWebView)
 @param param 自定义参数(在实现js对应的方法实现时候用到)
 */
- (void)resetNGCBridgeWithWebview:(id)webView withParam:(NSDictionary *)param;    //后面补注释




/**
 注入某个类的所有方法

 @param objc 可以是单个类实例化，可以是多个(多个类实例化，传入数组 如：obj1,obj2....)
 */
//- (void)registerApis:(id)objc;

/**
 注入js API
 @param objc            可以是单个类实例化，可以是多个(多个类实例化需传入数组 如：[obj1,obj2....])
 @param wkWebView       需要绑定jsBridge的webView
 @param param           自定义参数(在实现js对应的方法实现时候用到)
 */
- (void)registerApis:(id)objc withNGCWKWebView:(NGCWKWebView *)wkWebView withParam:(NSDictionary *)param;

- (void)registerApis:(id)objc withWebView:(NGCWebView *)webView withParam:(NSDictionary *)param;


/**
 设置native调用h5的API类
 @param objc            可以是单个类实例化，可以是多个(多个类实例化，传入数组 如：obj1,obj2....)
 @param selector        call的方法名字(约定好的"selectorName")
 @param webView         需要绑定的webview
 @param param           自定义参数(在实现js对应的方法实现时候用到)
 */
- (void)callHandler:(id)objc withSelector:(NSString *)selector withWebView:(id)webView withParam:(NSDictionary *)param;
@end
